using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using SampleDotNetCore2RestStub.Attributes;
using SampleDotNetCore2RestStub.Middleware;
using SampleDotNetCore2RestStub.Repositories;
 
namespace SampleDotNetCore2RestStub
{
public class Startup
{
public Startup()
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
 
Configuration = configurationBuilder.Build();
}
 
public IConfiguration Configuration { get; }
 
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<AppConfig>(Configuration);
services.AddScoped<AuthenticationFilterAttribute>();
 
ConfigureRepositories(services);
}
 
public virtual void ConfigureRepositories(IServiceCollection services)
{
services.AddSingleton<IPersonRepository, PersonRepository>();
}
 
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMiddleware<HttpExceptionMiddleware>();
app.UseMvc();
}
}
}